/**
 * Copyright (c) iwindplus Technologies Co., Ltd.2024-2030, All rights reserved.
 */

package com.iwindplus.setup.server.service;

import java.io.File;
import java.util.List;
import org.springframework.web.multipart.MultipartFile;

/**
 * 邮箱业务层接口类.
 *
 * @author zengdegui
 * @since 2021/7/20
 */
public interface MailboxService {

    /**
     * 发送邮件.
     *
     * @param code        配置编码（必填）
     * @param subject     邮件标题（必填）
     * @param content     邮件内容（必填）
     * @param tos         收件人（必填）
     * @param ccs         抄送人（可选）
     * @param bccs        密送人（可选）
     * @param attachments 附件（可选）
     */
    void send(String code, String subject, String content, List<String> tos, List<String> ccs, List<String> bccs, List<MultipartFile> attachments);

    /**
     * 发送邮件.
     *
     * @param code        配置编码（必填）
     * @param subject     邮件标题（必填）
     * @param content     邮件内容（必填）
     * @param tos         收件人（必填）
     * @param ccs         抄送人（可选）
     * @param bccs        密送人（可选）
     * @param attachments 附件（可选）
     */
    void sendTwo(String code, String subject, String content, List<String> tos, List<String> ccs, List<String> bccs, List<File> attachments);

    /**
     * 发送邮箱验证码（邮箱）.
     *
     * @param tplCode 模板配置编码（必填）
     * @param mail    邮箱（必填）
     */
    void sendCaptcha(String tplCode, String mail);

    /**
     * 发送邮箱验证码（用户主键）.
     *
     * @param tplCode 模板配置编码（必填）
     * @param userId  用户主键（必填）
     * @param orgId   组织主键（必填）
     */
    void sendCaptchaByUserId(String tplCode, Long userId, Long orgId);

}
